//
//
//
//
//

#include "Semaphore.h"

Semaphore::Semaphore(U32 init)
{
	sem_init(&_sem, 0, 0);
}

Semaphore::~Semaphore(void)
{
	sem_destroy(&_sem);
}

bool Semaphore::Post()
{
	return sem_post(&_sem) == 0 ? true : false;
}

bool Semaphore::Wait()
{
	return sem_wait(&_sem) == 0 ? true : false;
}

bool Semaphore::TryWait()
{
	S32 ret = sem_trywait(&_sem);
	if(ret == -1 && errno == EAGAIN)
		return false;
	if(ret == 0)
		return true;
	return false;
}
